coredump_docker

如何在Docker中产生CoreDump文件

参考:https://zhuanlan.zhihu.com/p/24311785

1、ulimit把CoreDump限制打开

# 此参数为0时系统不会自动生成core dump文件
ulimit -c unlimited

2、程序崩溃退出时用 abort() 来替换 exit()

当执行 abort() 的时候,程序直接退出,不执行清扫,并且会产生 Core Dump 文件(如果 ulimit 允许的话)。

3、在宿主机节点设置CoreDump文件的格式

# 系统产生的core dump文件的名字是根据 /proc/sys/kernel/core_pattern 决定的
echo '/tmp/core.%t.%e.%p xxx' | sudo tee /proc/sys/kernel/core_pattern

4、docker run 的时候要加上以下参数

--ulimit core=-1 --security-opt seccomp=unconfined

前者就是把 Core Dump 文件的大小设置为无限制,后者是为了开放 ptrace 系列高权限的系统调用,这样我们才可以在 Docker 里面使用 GDB。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 nz_nuaa@163.com
github